1 Set Up The Map

This part is admittedly a little complicated, mostly because I added options to get the map to look exactly the way that I wanted.

It’s not necessary to understand the code here. But I learned a lot from: https://plotly.com/r/#maps.

library(plotly)
# a very basic map could be created with: 

library(plotly)

plot_geo()
mymap <- plot_geo() %>%
  layout(title = "Demonstration Map", 
         geo = list(showland = TRUE,  
                    landcolor = toRGB("grey"),
                    showcountries = TRUE,
                    showocean=FALSE, 
                    oceancolor="LightBlue",
                    lataxis = list(showgrid = TRUE,
                                   gridcolor = toRGB("black")),
                    lonaxis = list(showgrid = TRUE,
                                   gridcolor = toRGB("black")))) 

2 Map Projections

2.1 Globe

mymap %>% 
  layout(geo = list(projection = list(type = 'orthographic')))

2.2 Mercator

Perpendicular latitude and longitude. Can be helpful in some kinds of navigation, but areas are distorted, especially as one approaches the poles.

mymap %>% 
  layout(geo=list(projection = list(type = 'mercator')))

2.3 Mollweide

An equal area projection.

mymap %>% 
  layout(geo=list(projection = list(type = 'mollweide')))

2.4 Robinson

An attempt to compromise between equal areas and a natural looking map.

mymap %>% 
  layout(geo=list(projection = list(type = 'robinson')))
LS0tDQp0aXRsZTogIk1hcCBQcm9qZWN0aW9ucyINCmF1dGhvcjogIkFuZHkgR3JvZ2FuLUtheWxvciINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNzczogVU0uY3NzDQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogbm8NCiAgICAgIHNtb290aF9zY3JvbGw6IHllcw0KICBkaXN0aWxsOjpkaXN0aWxsX2FydGljbGU6DQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgdG9jOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UpDQoNCmBgYA0KDQojIFNldCBVcCBUaGUgTWFwDQoNCj4gVGhpcyBwYXJ0IGlzIGFkbWl0dGVkbHkgYSBsaXR0bGUgY29tcGxpY2F0ZWQsIG1vc3RseSBiZWNhdXNlIEkgYWRkZWQgb3B0aW9ucyB0byBnZXQgdGhlIG1hcCB0byBsb29rIGV4YWN0bHkgdGhlIHdheSB0aGF0IEkgd2FudGVkLiANCg0KPiBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBoZXJlLiBCdXQgSSBsZWFybmVkIGEgbG90IGZyb206IFtodHRwczovL3Bsb3RseS5jb20vci8jbWFwc10oaHR0cHM6Ly9wbG90bHkuY29tL3IvI21hcHMpLg0KDQpgYGB7cn0NCg0KbGlicmFyeShwbG90bHkpDQoNCmBgYA0KDQpgYGB7ciwgZWNobz1UUlVFLCBldmFsPUZBTFNFfQ0KDQojIGEgdmVyeSBiYXNpYyBtYXAgY291bGQgYmUgY3JlYXRlZCB3aXRoOiANCg0KbGlicmFyeShwbG90bHkpDQoNCnBsb3RfZ2VvKCkNCg0KYGBgDQoNCg0KYGBge3J9DQoNCm15bWFwIDwtIHBsb3RfZ2VvKCkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJEZW1vbnN0cmF0aW9uIE1hcCIsIA0KICAgICAgICAgZ2VvID0gbGlzdChzaG93bGFuZCA9IFRSVUUsICANCiAgICAgICAgICAgICAgICAgICAgbGFuZGNvbG9yID0gdG9SR0IoImdyZXkiKSwNCiAgICAgICAgICAgICAgICAgICAgc2hvd2NvdW50cmllcyA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgIHNob3dvY2Vhbj1GQUxTRSwgDQogICAgICAgICAgICAgICAgICAgIG9jZWFuY29sb3I9IkxpZ2h0Qmx1ZSIsDQogICAgICAgICAgICAgICAgICAgIGxhdGF4aXMgPSBsaXN0KHNob3dncmlkID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZGNvbG9yID0gdG9SR0IoImJsYWNrIikpLA0KICAgICAgICAgICAgICAgICAgICBsb25heGlzID0gbGlzdChzaG93Z3JpZCA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRjb2xvciA9IHRvUkdCKCJibGFjayIpKSkpIA0KDQpgYGANCg0KIyBNYXAgUHJvamVjdGlvbnMNCg0KIyMgR2xvYmUNCg0KYGBge3J9DQoNCm15bWFwICU+JSANCiAgbGF5b3V0KGdlbyA9IGxpc3QocHJvamVjdGlvbiA9IGxpc3QodHlwZSA9ICdvcnRob2dyYXBoaWMnKSkpDQoNCmBgYA0KDQojIyBNZXJjYXRvciANCg0KPiBQZXJwZW5kaWN1bGFyIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUuIENhbiBiZSBoZWxwZnVsIGluIHNvbWUga2luZHMgb2YgbmF2aWdhdGlvbiwgYnV0IGFyZWFzIGFyZSBkaXN0b3J0ZWQsIGVzcGVjaWFsbHkgYXMgb25lIGFwcHJvYWNoZXMgdGhlIHBvbGVzLg0KDQpgYGB7cn0NCg0KbXltYXAgJT4lIA0KICBsYXlvdXQoZ2VvPWxpc3QocHJvamVjdGlvbiA9IGxpc3QodHlwZSA9ICdtZXJjYXRvcicpKSkNCg0KYGBgDQoNCiMjIE1vbGx3ZWlkZQ0KDQo+IEFuICplcXVhbCBhcmVhKiBwcm9qZWN0aW9uLg0KDQpgYGB7cn0NCg0KbXltYXAgJT4lIA0KICBsYXlvdXQoZ2VvPWxpc3QocHJvamVjdGlvbiA9IGxpc3QodHlwZSA9ICdtb2xsd2VpZGUnKSkpDQoNCmBgYA0KDQojIyBSb2JpbnNvbg0KDQo+IEFuIGF0dGVtcHQgdG8gY29tcHJvbWlzZSBiZXR3ZWVuIGVxdWFsIGFyZWFzIGFuZCBhIG5hdHVyYWwgbG9va2luZyBtYXAuDQoNCmBgYHtyfQ0KDQpteW1hcCAlPiUgDQogIGxheW91dChnZW89bGlzdChwcm9qZWN0aW9uID0gbGlzdCh0eXBlID0gJ3JvYmluc29uJykpKQ0KDQpgYGANCg0KDQo=